use sea_orm::sea_query::{Expr, SimpleExpr};
use serde_json::json;

// * ------------------------------------------------------------ 自定义 SQL ------------------------------------------------------------ */
pub fn cust_exprs(str:&str) -> SimpleExpr { Expr::cust(str) }
// 在 json 数组中搜索
pub fn search_json_arr_str(col:&str,arr:Vec<String>) -> SimpleExpr { cust_exprs(&format!("JSON_CONTAINS({}->>'$[*]', '{}', '$')", col, json!(arr))) }
pub fn search_json_arr_i32(col:&str,arr:Vec<i32>) -> SimpleExpr { cust_exprs(&format!("JSON_CONTAINS({}->>'$[*]', '{}', '$')", col, json!(arr))) }
// 在 json 数组对象中搜索
pub fn search_json_arr_obj_str(col:&str, name:&str,s:&str) -> SimpleExpr { cust_exprs(&format!("{}->>'$[*].{}' like '%{}%'", col, name, s)) }
// 将 blog 转这 text
pub fn cust_blob(field:&str) -> SimpleExpr { cust_exprs(&format!("CAST({} AS CHAR(10000) CHARACTER SET utf8)",field)) }
// 给 json 数组的每个元素加前缀
// pub fn json_add_prefix(field:&str, prefix:&str) -> SimpleExpr {
//     cust_exprs(&format!("JSON_ARRAY_APPEND('{}', '$', {}))", field, prefix))
// }
// 查找 json数组对象中某个字段的所有值
// pub fn cust_json_arr(field:&str, name:&str) -> SimpleExpr { Expr::cust(&format!("{} -> '$[*].{}'",field,name)) }